using System;

namespace nHydrate.EFCore.Attributes
{
	[AttributeUsage(AttributeTargets.Class)]
	public partial class EntityMetadata : System.Attribute
	{
		public EntityMetadata(
			string name,
			bool allowAuditTracking,
			bool allowCreateAudit,
			bool allowModifiedAudit,
			bool allowConcurrencyAudit,
			string description,
			bool enforcePrimaryKey,
			bool immutable,
			bool isTypeTable,
			string dbSchema
		)
		{
			this.Name = name;
			this.AllowAuditTracking = allowAuditTracking;
			this.AllowCreateAudit = allowCreateAudit;
			this.AllowModifiedAudit = allowModifiedAudit;
			this.AllowConcurrencyAudit = allowConcurrencyAudit;
			this.Description = description;
			this.EnforcePrimaryKey = enforcePrimaryKey;
			this.Immutable = immutable;
			this.IsTypeTable = isTypeTable;
			this.DBSchema = dbSchema;
		}

		public string Name { get; set; }
		public bool AllowAuditTracking { get; set; }
		public bool AllowCreateAudit { get; set; }
		public bool AllowModifiedAudit { get; set; }
		public bool AllowConcurrencyAudit { get; set; }
		public string Description { get; set; }
		public bool EnforcePrimaryKey { get; set; }
		public bool Immutable { get; set; }
		public bool IsTypeTable { get; set; }
		public string DBSchema { get; set; }
	}
}